# 构建器模式（Builder Pattern）是一种创建型设计模式，用于构建复杂对象。这种模式将对象的构造与表示进行分离，使得相同的构造过程可以产生不同的表示。构建器模式通常用于创建那些包含多个组成部分并且创建步骤不同的对象。
# 下面是一个使用构建器模式的例子，我们将构建一个复杂的对象——电脑。
# 首先，我们定义一个电脑的组成部分：
# ```python
class Computer:
    def __init__(self, builder):
        self.memory = builder.memory
        self.cpu = builder.cpu
        self.gpu = builder.gpu
        self.hdd = builder.hdd

    def __str__(self):
        return f"Memory: {self.memory}, CPU: {self.cpu}, GPU: {self.gpu}, HDD: {self.hdd}"


# ComputerBuilder类定义了如何构建电脑的各个部分
class ComputerBuilder:
    def __init__(self):
        self.memory = "Unknown"
        self.cpu = "Unknown"
        self.gpu = "Unknown"
        self.hdd = "Unknown"

    def set_memory(self, memory):
        self.memory = memory
        return self

    def set_cpu(self, cpu):
        self.cpu = cpu
        return self

    def set_gpu(self, gpu):
        self.gpu = gpu
        return self

    def set_hdd(self, hdd):
        self.hdd = hdd
        return self

    def build(self):
        return Computer(self)

if __name__ == '__main__':

    # 使用构建器模式构建电脑
    builder = ComputerBuilder()
    computer = builder.set_memory("16GB").set_cpu("Intel Core i7").set_gpu("NVIDIA GeForce RTX 3080").set_hdd(
        "1TB SSD").build()
    print(computer)  # 输出: Memory: 16GB, CPU: Intel Core i7, GPU: NVIDIA GeForce RTX 3080, HDD: 1TB SSD
# ```
# 在这个例子中，`Computer` 类是我们要构建的复杂对象，而 `ComputerBuilder` 类提供了构建 `Computer` 对象的步骤。`ComputerBuilder` 类中的方法返回构建器本身，这使得我们可以使用链式调用方法来构建对象。
# 使用构建器模式的好处是，如果我们想要改变构建过程或者添加新的构建步骤，我们只需要修改或者扩展 `ComputerBuilder` 类，而不需要修改 `Computer` 类本身。这使得我们的代码更加模块化和可维护。
# 此外，构建器模式还可以用于创建那些需要多个步骤才能完成的复杂对象，例如，当对象的创建涉及到异步操作或者需要逐步验证时。构建器模式提供了一种清晰的方式来逐步构建对象，同时保持代码的可读性和可维护性。
